package com.foreknow.demo7;

import java.util.ArrayList;
import java.util.List;

public class EmployeeDaoImpl implements EmployeeDao {
    // 声明一个数组容器
    private static List<Employee> emps;

    public EmployeeDaoImpl(List<Employee> emps) {
        // 利用构造器初始化数组
        this.emps = emps;
    }

    @Override
    public boolean insert(Employee emp) {
        // 1、判断参数emp是否为空，如果不为空
        // 2、如果count<3
        // 3、要将emp对象添加到数组容器中,count加1
        if (emp == null){
            return false;
        }else {
            emps.add(emp);
            return true;
        }
    }

    @Override
    public List<Employee> selectAll() {
        // 1、对数组emps数组进行遍历，每遍历一次就要将原数组中获取到的员工对象保存到新的数组中
        // 2、返回新的数组
        List<Employee> employees = new ArrayList<>();
        List<Employee> list = new ArrayList<>();
        for (int i = 0; i < emps.size(); i++) {
            list.add(emps.get(i));
        }
        return list;
    }

    @Override
    public boolean update(int id, Employee emp) {
        // 1、可以先根据id查询要修改的对象
        // 2、然后将查询到的对象传递给参数进行修改
        for (int i = 0; i < emps.size(); i++) {
            if (id == emps.get(i).getId()){
                emps.add(emp);
                return true;
            }
        }
        return false;
    }

    @Override
    public Employee selectById(int id) {
        // 1、对emps数组进行遍历
        // 2、每遍历一次就要获取到一个Employee对象，判断Employee对象的id是否与参数的id相等
        // 3、最后将查询到的对象返回
        for (int i = 0; i < emps.size(); i++) {
            if (id == emps.get(i).getId()){
                return emps.get(i);
            }
        }
        return null;
    }

    public static void main(String[] args) {
        List<Employee> emps = new ArrayList<>();
        EmployeeDao employeeDao = new EmployeeDaoImpl(emps);

        // 添加
        Employee emp = new Employee(01, "张三", 5000, 1);
        if (employeeDao.insert(emp)){
            System.out.println("添加成功！");
        }else {
            System.out.println("添加失败！");
        }

        // 查询所有的员工信息
        List<Employee> employees = employeeDao.selectAll();
        if (emps.size() == 0){
            System.out.println("员工信息为空！");
        }else{
            for (int i = 0;i < emps.size();i++) {
                System.out.printf("%d\t\t%s\t\t%f\t\t%d\n",
                        employees.get(i).getId(),employees.get(i).getName(),employees.get(i).getSal(),employees.get(i).getDept());
            }
        }

        // 修改员工信息
        Employee emp1 = new Employee(02, "李四", 6000, 2);
        boolean isUpdateRight = employeeDao.update(1, emp1);
        if (isUpdateRight){
            System.out.println("修改成功！");
        }else {
            System.out.println("修改失败！");
        }

        // 根据id查询员工信息
        Employee employee = employeeDao.selectById(2);
        if (employee == null){
            System.out.println("无此工号的员工！");
        }else{
            System.out.printf("%d\t\t%s\t\t%f\t\t%d\n",employee.getId(),employee.getName(),employee.getSal(),employee.getDept());
        }

    }
}
